﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
using Microsoft.Office.Tools.Ribbon;
using Office = Microsoft.Office.Core;
namespace TISS_Add_in
{
    public partial class Ribbon1 : OfficeRibbon
    {
        public Ribbon1()
        {
            InitializeComponent();
        }

        #region Eventos

        private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
        {

        }

        private void btCriar_Click(object sender, RibbonControlEventArgs e)
        {
            if (!btCriar.Checked)
            {
                try
                {
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.SelectGuiaTypeCTP);
                }
                catch (Exception)
                {
                    Globals.ThisAddIn.SelectGuiaTypeCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_SelectGuiaType(), "Selecione");
                    Globals.ThisAddIn.SelectGuiaTypeCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                    Globals.ThisAddIn.SelectGuiaTypeCTP.Width = 395;
                    Globals.ThisAddIn.SelectGuiaTypeCTP.Height = 385;
                    Globals.ThisAddIn.SelectGuiaTypeCTP.Visible = true;
                    //Globals.ThisAddIn.doc = Globals.ThisAddIn.Application.ActiveDocument;

                    Globals.ThisAddIn.SelectGuiaTypeCTP.VisibleChanged += new EventHandler(SelectGuiaTypeCTP_VisibleChanged);

                    btCriar.Checked = true;
                }
            }
            else
            {
                Globals.ThisAddIn.SelectGuiaTypeCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_SelectGuiaType(), "Selecione");
                Globals.ThisAddIn.SelectGuiaTypeCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                Globals.ThisAddIn.SelectGuiaTypeCTP.Width = 395;
                Globals.ThisAddIn.SelectGuiaTypeCTP.Height = 385;
                Globals.ThisAddIn.SelectGuiaTypeCTP.Visible = true;
                //Globals.ThisAddIn.doc = Globals.ThisAddIn.Application.ActiveDocument;

                Globals.ThisAddIn.SelectGuiaTypeCTP.VisibleChanged += new EventHandler(SelectGuiaTypeCTP_VisibleChanged);
            }
        }

        private void btAssinar_Click(object sender, RibbonControlEventArgs e)
        {
            Globals.ThisAddIn.Application.ActiveDocument.Signatures.Add();
        }

        private void btAcompanhar_Click(object sender, RibbonControlEventArgs e)
        {
            if (!btnAcompanhar.Checked)
            {
                try
                {
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.AcompanhaGuiaCTP);
                }
                catch (Exception)
                {
                    Globals.ThisAddIn.AcompanhaGuiaCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_AcompanhaGuia(), "Lotes");
                    Globals.ThisAddIn.AcompanhaGuiaCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
                    Globals.ThisAddIn.AcompanhaGuiaCTP.Width = 315;
                    Globals.ThisAddIn.AcompanhaGuiaCTP.Visible = true;

                    Globals.ThisAddIn.AcompanhaGuiaCTP.VisibleChanged += new EventHandler(AcompanhaGuiaCTP_VisibleChanged);

                    btnAcompanhar.Checked = true;
                }
            }
            else
            {
                Globals.ThisAddIn.AcompanhaGuiaCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_AcompanhaGuia(), "Lotes");
                Globals.ThisAddIn.AcompanhaGuiaCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft;
                Globals.ThisAddIn.AcompanhaGuiaCTP.Width = 315;
                Globals.ThisAddIn.AcompanhaGuiaCTP.Visible = true;

                Globals.ThisAddIn.AcompanhaGuiaCTP.VisibleChanged += new EventHandler(AcompanhaGuiaCTP_VisibleChanged);
            }
        }

        private void btnModConf_Click(object sender, RibbonControlEventArgs e)
        {
            if (!btnModConf.Checked)
            {
                try
                {
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.ModConfCTP);
                }
                catch (Exception)
                {
                    try
                    {
                        Globals.ThisAddIn.AcompanhaGuiaCTP.Visible = false;
                        Globals.ThisAddIn.DemonstrativosCTP.Visible = false;
                        Globals.ThisAddIn.ListaProcedimentosCTP.Visible = false;
                        Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.AcompanhaGuiaCTP);
                        Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.DemonstrativosCTP);
                        Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.ListaProcedimentosCTP);
                    }
                    catch (Exception) { }
                    Globals.ThisAddIn.ModConfCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_ModConfig(), "Configurações");
                    Globals.ThisAddIn.ModConfCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                    Globals.ThisAddIn.ModConfCTP.Width = 550;
                    Globals.ThisAddIn.ModConfCTP.Height = 460;
                    Globals.ThisAddIn.ModConfCTP.Visible = true;

                    Globals.ThisAddIn.ModConfCTP.VisibleChanged += new EventHandler(ModConfCTP_VisibleChanged);

                    btnModConf.Checked = true;
                }
            }
            else
            {
                try
                {
                    Globals.ThisAddIn.AcompanhaGuiaCTP.Visible = false;
                    Globals.ThisAddIn.DemonstrativosCTP.Visible = false;
                    Globals.ThisAddIn.ListaProcedimentosCTP.Visible = false;
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.AcompanhaGuiaCTP);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.DemonstrativosCTP);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.ListaProcedimentosCTP);
                }
                catch (Exception) { }
                Globals.ThisAddIn.ModConfCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_ModConfig(), "Configurações");
                Globals.ThisAddIn.ModConfCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                Globals.ThisAddIn.ModConfCTP.Width = 550;
                Globals.ThisAddIn.ModConfCTP.Height = 460;
                Globals.ThisAddIn.ModConfCTP.Visible = true;

                Globals.ThisAddIn.ModConfCTP.VisibleChanged += new EventHandler(ModConfCTP_VisibleChanged);
            }
        }

        private void btValidar_Click(object sender, RibbonControlEventArgs e)
        {
            if (!btValidar.Checked)
            {
                try
                {
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.ValidacaoCTP);
                }
                catch (Exception)
                {
                    btValidar.Checked = false;
                }
            }
            else
            {
                try
                {
                    Globals.ThisAddIn.Application.ActiveDocument.Save();
                    XmlDocument xDoc = new XmlDocument();
                    Globals.ThisAddIn.validationResults = new System.Collections.Generic.List<ValidationInfo>();
                    bool isGuiaTiss = false;
                    foreach (Microsoft.Office.Core.CustomXMLPart ccPart in Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts)
                    {

                        if (ccPart.XML.Contains("guiaConsultaReapresentacao"))
                        {
                            xDoc.LoadXml(ccPart.XML);
                            Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Consulta_Reapresentação);
                            isGuiaTiss = true;
                            break;
                        }
                        else if (ccPart.XML.Contains("guiaSP_SADTReapresentacao"))
                        {
                            xDoc.LoadXml(ccPart.XML);
                            Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.SP_SADT_Reapresentação);
                            isGuiaTiss = true;
                            break;
                        }
                        else if (ccPart.XML.Contains("guiaResumoInternacaoReapresentacao"))
                        {
                            xDoc.LoadXml(ccPart.XML);
                            Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Resumo_Internação_Reapresentação);
                            isGuiaTiss = true;
                            break;
                        }
                        else if (ccPart.XML.Contains("guiaHonorarioIndividualReapresentacao"))
                        {
                            xDoc.LoadXml(ccPart.XML);
                            Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Honorário_Individual_Reapresentação);
                            isGuiaTiss = true;
                            break;
                        }
                        else if (ccPart.XML.Contains("guiaOdontologiaReapresentacao"))
                        {
                            xDoc.LoadXml(ccPart.XML);
                            Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Odontologia_Reapresentação);
                            isGuiaTiss = true;
                            break;
                        }
                        else
                            if (ccPart.XML.Contains("guiaConsulta"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Consulta);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaSP_SADT"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.SP_SADT);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaResumoInternacao"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Resumo_Internação);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaHonorarioIndividual"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Honorário_Individual);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaOdontologia"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Odontologia);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaSolicInternacao"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Solicitação_Internação);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaSolicitacaoSP_SADT"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Solicitação_SADT);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaSolicitacaoProrrogacao"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Solicitação_Prorrogação);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("guiaSolicitacaoOdonto"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Solicitação_Odontologia);
                                isGuiaTiss = true;
                                break;
                            }
                            else if (ccPart.XML.Contains("outrasDespesas"))
                            {
                                xDoc.LoadXml(ccPart.XML);
                                Globals.ThisAddIn.validationResults = XMLUtils.ValidateGuia(XMLUtils.GetNormalizedXMLString(xDoc), TipoGuia.Outras_Despesas);
                                isGuiaTiss = true;
                                break;
                            }

                    }

                    if (!isGuiaTiss)
                        Globals.ThisAddIn.validationResults.Add(new ValidationInfo("ERRO", "O Documento Não É Uma Guia TISS"));
                    uc_Validacao ucValidacao = new uc_Validacao(Globals.ThisAddIn.validationResults);
                    Globals.ThisAddIn.ValidacaoCTP = Globals.ThisAddIn.CustomTaskPanes.Add(ucValidacao, "Resultados de Validação");
                    Globals.ThisAddIn.ValidacaoCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionTop;
                    Globals.ThisAddIn.ValidacaoCTP.Height = 140;
                    Globals.ThisAddIn.ValidacaoCTP.Visible = true;
                    Globals.ThisAddIn.ValidacaoCTP.Control.Focus();

                    Globals.ThisAddIn.ValidacaoCTP.VisibleChanged += new EventHandler(ValidacaoCTP_VisibleChanged);
                }
                catch (Exception)
                { }
            }
        }

        private void btLogin_Click(object sender, RibbonControlEventArgs e)
        {
            bool loggedIn = true;
            if (!btnLogin.Checked)
            {
                try
                {
                    Globals.Ribbons.Ribbon1.grpProcedimentos.Visible = false;
                    Globals.Ribbons.Ribbon1.btnAcompanhar.Enabled = false;
                    Globals.Ribbons.Ribbon1.btnDemonstrativos.Enabled = false;
                    Globals.Ribbons.Ribbon1.btnAcompanhar.Checked = false;
                    Globals.Ribbons.Ribbon1.btnDemonstrativos.Checked = false;

                    Globals.ThisAddIn.UsuarioID = -1;
                    Globals.ThisAddIn.PrestadorNome = null;
                    Globals.Ribbons.Ribbon1.btnLogin.Image = new Bitmap(TISS_Add_in.Properties.Resources.login32);
                    Globals.Ribbons.Ribbon1.btnLogin.Label = "Login";

                    loggedIn = false;

                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.LoginCTP);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.AcompanhaGuiaCTP);
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.DemonstrativosCTP);
                }
                catch (Exception)
                { }
            }

            if (loggedIn)
            {
                Globals.ThisAddIn.LoginCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_Login(), "Login");
                Globals.ThisAddIn.LoginCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                Globals.ThisAddIn.LoginCTP.Width = 125;
                Globals.ThisAddIn.LoginCTP.Height = 155;
                Globals.ThisAddIn.LoginCTP.Visible = true;
                Globals.ThisAddIn.LoginCTP.Control.Focus();

                Globals.ThisAddIn.LoginCTP.VisibleChanged += new EventHandler(LoginCTP_VisibleChanged);

                Globals.Ribbons.Ribbon1.btnLogin.Image = new Bitmap(TISS_Add_in.Properties.Resources.logoff32);
                Globals.Ribbons.Ribbon1.btnLogin.Label = "Logoff";
            }

            btnLogin.Checked = loggedIn;
        }

        private void btAddEquipe_Click(object sender, RibbonControlEventArgs e)
        {
            if (Globals.ThisAddIn.Application.Documents.Count > 0)
            {
                try
                {
                    Globals.ThisAddIn.Application.ActiveDocument.Save();
                    Office.CustomXMLPart cXMLPart = null;
                    TipoGuia tipoGuia = new TipoGuia();
                    foreach (Office.CustomXMLPart cPart in Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts)
                    {
                        if (cPart.XML.Contains("guiaResumoInternacao"))
                        {
                            cXMLPart = cPart;
                            tipoGuia = TipoGuia.Resumo_Internação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSP_SADT"))
                        {
                            cXMLPart = cPart;
                            tipoGuia = TipoGuia.SP_SADT;
                            break;
                        }
                    }
                    if (cXMLPart != null)
                    {
                        if (!btAddEquipe.Checked)
                        {
                            try
                            {
                                Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.ListaProcedimentosCTP);
                            }
                            catch (Exception)
                            {
                                List<ProcedimentoHandler> listaProcedimentos = ProcedimentoHandler.GetAllProcedimentosFromCustomXMLPart(cXMLPart);

                                Globals.ThisAddIn.ListaProcedimentosCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_ListaProcedimentos(cXMLPart, listaProcedimentos, tipoGuia), "Selecione");
                                Globals.ThisAddIn.ListaProcedimentosCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                                Globals.ThisAddIn.ListaProcedimentosCTP.Height = 263;
                                Globals.ThisAddIn.ListaProcedimentosCTP.Width = 336;
                                Globals.ThisAddIn.ListaProcedimentosCTP.Visible = true;

                                Globals.ThisAddIn.ListaProcedimentosCTP.VisibleChanged += new EventHandler(ListaProcedimentosCTP_VisibleChanged);

                                btAddEquipe.Checked = true;
                            }
                        }
                        else
                        {
                            List<ProcedimentoHandler> listaProcedimentos = ProcedimentoHandler.GetAllProcedimentosFromCustomXMLPart(cXMLPart);

                            Globals.ThisAddIn.ListaProcedimentosCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_ListaProcedimentos(cXMLPart, listaProcedimentos, tipoGuia), "Selecione");
                            Globals.ThisAddIn.ListaProcedimentosCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionFloating;
                            Globals.ThisAddIn.ListaProcedimentosCTP.Height = 263;
                            Globals.ThisAddIn.ListaProcedimentosCTP.Width = 336;
                            Globals.ThisAddIn.ListaProcedimentosCTP.Visible = true;

                            Globals.ThisAddIn.ListaProcedimentosCTP.VisibleChanged += new EventHandler(ListaProcedimentosCTP_VisibleChanged);
                        }
                    }

                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("Command failed"))
                    {
                        btAddEquipe.Checked = false;
                        MessageBox.Show("Por favor, selecione uma Guia");
                    }
                }
            }
            else
            {
                btAddEquipe.Checked = false;
                MessageBox.Show("Por favor, selecione uma Guia");
            }
        }

        private void btnDemonstrativos_Click(object sender, RibbonControlEventArgs e)
        {
            if (!btnDemonstrativos.Checked)
            {
                try
                {
                    Globals.ThisAddIn.CustomTaskPanes.Remove(Globals.ThisAddIn.DemonstrativosCTP);
                }
                catch (Exception)
                {
                    Globals.ThisAddIn.DemonstrativosCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_Demonstrativos(), "Demonstrativos");
                    Globals.ThisAddIn.DemonstrativosCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight;
                    Globals.ThisAddIn.DemonstrativosCTP.Width = 285;
                    Globals.ThisAddIn.DemonstrativosCTP.Visible = true;
                    Globals.ThisAddIn.DemonstrativosCTP.Control.Focus();

                    Globals.ThisAddIn.DemonstrativosCTP.VisibleChanged += new EventHandler(DemonstrativosCTP_VisibleChanged);

                    btnDemonstrativos.Checked = true;
                }
            }
            else
            {
                Globals.ThisAddIn.DemonstrativosCTP = Globals.ThisAddIn.CustomTaskPanes.Add(new uc_Demonstrativos(), "Demonstrativos");
                Globals.ThisAddIn.DemonstrativosCTP.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionRight;
                Globals.ThisAddIn.DemonstrativosCTP.Width = 285;
                Globals.ThisAddIn.DemonstrativosCTP.Visible = true;
                Globals.ThisAddIn.DemonstrativosCTP.Control.Focus();

                Globals.ThisAddIn.DemonstrativosCTP.VisibleChanged += new EventHandler(DemonstrativosCTP_VisibleChanged);
            }
        }

        private void AcompanhaGuiaCTP_VisibleChanged(object sender, EventArgs e)
        {
            btnAcompanhar.Checked = Globals.ThisAddIn.AcompanhaGuiaCTP.Visible;
        }

        private void DemonstrativosCTP_VisibleChanged(object sender, EventArgs e)
        {
            btnDemonstrativos.Checked = Globals.ThisAddIn.DemonstrativosCTP.Visible;
        }

        private void ModConfCTP_VisibleChanged(object sender, EventArgs e)
        {
            btnModConf.Checked = Globals.ThisAddIn.ModConfCTP.Visible;
        }

        private void LoginCTP_VisibleChanged(object sender, EventArgs e)
        {
            btnLogin.Checked = Globals.ThisAddIn.LoginCTP.Visible;
            if (btnLogin.Checked)
            {
                Globals.Ribbons.Ribbon1.btnLogin.Image = new Bitmap(TISS_Add_in.Properties.Resources.logoff32);
                Globals.Ribbons.Ribbon1.btnLogin.Label = "Logoff";
            }
            else
            {
                Globals.Ribbons.Ribbon1.btnLogin.Image = new Bitmap(TISS_Add_in.Properties.Resources.login32);
                Globals.Ribbons.Ribbon1.btnLogin.Label = "Login";
            }
        }

        private void SelectGuiaTypeCTP_VisibleChanged(object sender, EventArgs e)
        {
            btCriar.Checked = Globals.ThisAddIn.SelectGuiaTypeCTP.Visible;
        }

        private void ListaProcedimentosCTP_VisibleChanged(object sender, EventArgs e)
        {
            btAddEquipe.Checked = Globals.ThisAddIn.ListaProcedimentosCTP.Visible;
        }

        private void ValidacaoCTP_VisibleChanged(object sender, EventArgs e)
        {
            btValidar.Checked = Globals.ThisAddIn.AcompanhaGuiaCTP.Visible;
        }

        private void btnProcedimento_Click(object sender, RibbonControlEventArgs e)
        {
            if (Globals.ThisAddIn.Application.Documents.Count > 0)
            {
                try
                {
                    Globals.ThisAddIn.Application.ActiveDocument.Save();
                    TipoCTProcedimento tipoCT = new TipoCTProcedimento();
                    TipoGuia tipoGuia = new TipoGuia();
                    Office.CustomXMLPart cXMLPart = null;

                    foreach (Office.CustomXMLPart cPart in Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts)
                    {
                        if (cPart.XML.Contains("guiaSP_SADTReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoRevisao;
                            tipoGuia = TipoGuia.SP_SADT_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSP_SADT"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoRealizadoEquipe;
                            tipoGuia = TipoGuia.SP_SADT;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaResumoInternacaoReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoRevisao;
                            tipoGuia = TipoGuia.Resumo_Internação_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaResumoInternacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoRealizadoEquipe;
                            tipoGuia = TipoGuia.Resumo_Internação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaHonorarioIndividualReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoRevisao;
                            tipoGuia = TipoGuia.Honorário_Individual_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaHonorarioIndividual"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentosRealizados;
                            tipoGuia = TipoGuia.Honorário_Individual;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaOdontologiaReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoOdontologia;
                            tipoGuia = TipoGuia.Odontologia_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaOdontologia"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoOdontologia;
                            tipoGuia = TipoGuia.Odontologia;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicInternacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentosSolicitados;
                            tipoGuia = TipoGuia.Solicitação_Internação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicitacaoSADT"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentosSolicitados;
                            tipoGuia = TipoGuia.Solicitação_SADT;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicitacaoProrrogacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentosSolicitados;
                            tipoGuia = TipoGuia.Solicitação_Prorrogação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicitacaoOdontologia"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTProcedimento.ct_procedimentoOdontoSolicitacao;
                            tipoGuia = TipoGuia.Solicitação_Odontologia;
                            break;
                        }
                    }
                    if (cXMLPart != null)
                    {
                        XDocument xPart = XDocument.Parse(cXMLPart.XML);
                        DataOfAvailableRow infoOfAvailableRow = new DataOfAvailableRow();
                        string ns = "http://www.ans.gov.br/padroes/tiss/schemas";
                        string rootXPath = "";
                        IEnumerable<XElement> xProcedimentos = null;
                        switch (tipoCT)
                        {
                            case TipoCTProcedimento.ct_procedimentoRealizadoEquipe:
                                foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                {
                                    if (row.Cells[1].Range.Text.Contains("Procedimentos e Exames Realizados"))
                                    {
                                        int rowNumber = row.Index + 2;
                                        if (tipoGuia == TipoGuia.SP_SADT)
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Data e Assinatura de Procedimentos em Série");
                                        else if (tipoGuia == TipoGuia.Resumo_Internação)
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Procedimentos e Exames Realizados (Continuação)", "Identificação da Equipe");
                                        break;
                                    }
                                }
                                if (infoOfAvailableRow.IsNewRow)
                                {
                                    rootXPath = @"ans:procedimentosRealizados[1]";
                                    xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosRealizados", ns));
                                    //var xProcsRealizados = xPart.Descendants()(XName.Get("procedimentosRealizados", ns));

                                    foreach (var procedimentos in xProcedimentos)
                                    {
                                        procedimentos.Add(GetXElement.ct_procedimentoRealizadoEquipe());
                                    }
                                }

                                    break;


                            case TipoCTProcedimento.ct_procedimentosRealizados:
                                    foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                    {
                                        if (row.Cells[1].Range.Text.Contains("Procedimentos e Exames Realizados"))
                                        {
                                            int rowNumber = row.Index + 2;
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "36-Observação");
                                            break;
                                        }
                                    }
                                    if (infoOfAvailableRow.IsNewRow)
                                    {
                                        rootXPath = @"ans:procedimentosExamesRealizados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExamesRealizados", ns));

                                        foreach (var procedimentos in xProcedimentos)
                                        {
                                            procedimentos.Add(GetXElement.ct_procedimentoRealizadoEquipe());
                                        }
                                    }
                                

                                break;


                            case TipoCTProcedimento.ct_procedimentoRevisao:
                                foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                {
                                    if (row.Cells[1].Range.Text.Contains("Procedimentos e Exames Realizados"))
                                    {
                                        int rowNumber = row.Index + 2;
                                        if (tipoGuia == TipoGuia.SP_SADT_Reapresentação)
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Data e Assinatura de Procedimentos em Série");
                                        else if (tipoGuia == TipoGuia.Resumo_Internação_Reapresentação)
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Procedimentos e Exames Realizados (Continuação)", "OPM Utilizados");
                                        else if (tipoGuia == TipoGuia.Honorário_Individual_Reapresentação)
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Observação");
                                        break;
                                    }
                                }
                                if (infoOfAvailableRow.IsNewRow)
                                {
                                    if (tipoGuia.Equals(TipoGuia.SP_SADT_Reapresentação) || tipoGuia.Equals(TipoGuia.Resumo_Internação_Reapresentação))
                                    {
                                        rootXPath = @"ans:procedimentosRealizados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosRealizados", ns));
                                    }
                                    else
                                    {
                                        rootXPath = @"ans:procedimentosExamesRealizados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExamesRealizados", ns));
                                    }

                                    foreach (var procedimentos in xProcedimentos)
                                    {
                                        procedimentos.Add(GetXElement.ct_procedimentoRevisao());
                                    }
                                }

                                break;


                            case TipoCTProcedimento.ct_procedimentosSolicitados:
                                if (tipoGuia.Equals(TipoGuia.Solicitação_Internação) || tipoGuia.Equals(TipoGuia.Solicitação_Prorrogação))
                                {
                                    foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                    {
                                        if (row.Cells[1].Range.Text.Contains("Procedimentos e Exames Solicitados"))
                                        {
                                            int rowNumber = row.Index + 2;
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "OPMs Solicitadas");
                                            break;
                                        }
                                    }
                                }
                                else
                                {
                                    foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                    {
                                        if (row.Cells[1].Range.Text.Contains("Dados da Solicitação / Procedimentos e Exames Solicitados"))
                                        {
                                            int rowNumber = row.Index + 3;
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Observação");
                                            break;
                                        }
                                    }
                                }
                                if (infoOfAvailableRow.IsNewRow)
                                {
                                    if (tipoGuia.Equals(TipoGuia.Solicitação_Internação) || tipoGuia.Equals(TipoGuia.Solicitação_Prorrogação))
                                    {
                                        rootXPath = @"ans:procedimentosExamesSolicitados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExamesSolicitados", ns));
                                    }
                                    else if (tipoGuia.Equals(TipoGuia.Solicitação_SADT))
                                    {
                                        rootXPath = @"ans:planoTratamento[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("planoTratamento", ns));
                                    }
                                    foreach (var procedimentos in xProcedimentos)
                                    {
                                        procedimentos.Add(GetXElement.ct_procedimentoSolicitado());
                                    }
                                }

                                break;


                            case TipoCTProcedimento.ct_procedimentoOdontologia:
                            case TipoCTProcedimento.ct_procedimentoOdontoSolicitacao:
                                foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                {
                                    if (row.Cells[1].Range.Text.Contains("Plano de Tratamento / Procedimentos Solicitados / Procedimentos Executados"))
                                    {
                                        int rowNumber = row.Index + 2;
                                        infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                            "Data Término do Tratamento");
                                        break;
                                    }
                                }
                                if (infoOfAvailableRow.IsNewRow)
                                {
                                    if (tipoGuia.Equals(TipoGuia.Odontologia))
                                    {
                                        rootXPath = @"ans:procedimentosExecutados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExecutados", ns));
                                        foreach (var procedimentos in xProcedimentos)
                                        {
                                            procedimentos.Add(GetXElement.ct_procedimentoOdonto());
                                        }
                                    }
                                    else if (tipoGuia.Equals(TipoGuia.Odontologia_Reapresentação))
                                    {
                                        rootXPath = @"ans:procedimentosExecutados[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExecutados", ns));
                                        foreach (var procedimentos in xProcedimentos)
                                        {
                                            procedimentos.Add(GetXElement.ct_procedimentoOdontoRevisao());
                                        }
                                    }
                                    else if (tipoGuia.Equals(TipoGuia.Solicitação_Odontologia))
                                    {
                                        rootXPath = @"ans:procedimentoSolicitado[1]";
                                        xProcedimentos = xPart.Descendants().Elements(XName.Get("procedimentosExecutados", ns));
                                        foreach (var procedimentos in xProcedimentos)
                                        {
                                            procedimentos.Add(GetXElement.ct_procedimentoOdontoSolicitacao());
                                        }
                                    }
                                }
                                break;
                        }
                        if (infoOfAvailableRow.IsNewRow)
                        {
                            cXMLPart.NamespaceManager.AddNamespace("ans", ns);
                            Office.CustomXMLNode newNode = cXMLPart.DocumentElement.SelectSingleNode(rootXPath);
                            newNode.ParentNode.ReplaceChildSubtree(xProcedimentos.ElementAt(0).ToString(), newNode);
                        }
                        int procedimentoIndex = XMLUtils.GetNumberOfProcedimentosFromCustomXML(cXMLPart, tipoGuia);
                        object ccIndex = 1;
                        for (int i = 1; i <= infoOfAvailableRow.Row.Cells.Count; i++)
                        {
                            if (infoOfAvailableRow.Row.Previous.Cells[i].Range.ContentControls.Count > 0)
                            {
                                Microsoft.Office.Interop.Word.ContentControl oldCC = infoOfAvailableRow.Row.Previous.Cells[i].Range.ContentControls.get_Item(ref ccIndex);
                                AddinUtils.AddContentControlToRange(oldCC, infoOfAvailableRow.Row.Cells[i].Range,
                                    GetNodeXPath.ProcedimentoXPath(oldCC, procedimentoIndex, tipoCT), cXMLPart);
                            }
                        }
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Falha ao Adicionar novo Procedimento");
                }
            }
            else
            {
                btAddEquipe.Checked = false;
                MessageBox.Show("Por favor, selecione uma Guia");
            }
        }

        private void btnOPM_Click(object sender, RibbonControlEventArgs e)
        {
            if (Globals.ThisAddIn.Application.Documents.Count > 0)
            {
                try
                {
                    Globals.ThisAddIn.Application.ActiveDocument.Save();
                    TipoCTOPM tipoCT = new TipoCTOPM();
                    TipoGuia tipoGuia = new TipoGuia();
                    Office.CustomXMLPart cXMLPart = null;

                    foreach (Office.CustomXMLPart cPart in Globals.ThisAddIn.Application.ActiveDocument.CustomXMLParts)
                    {
                        if (cPart.XML.Contains("guiaSP_SADTReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMUtilizadaRevisao;
                            tipoGuia = TipoGuia.SP_SADT_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSP_SADT"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMUtilizada;
                            tipoGuia = TipoGuia.SP_SADT;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaResumoInternacaoReapresentacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMUtilizadaRevisao;
                            tipoGuia = TipoGuia.Resumo_Internação_Reapresentação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaResumoInternacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMUtilizada;
                            tipoGuia = TipoGuia.Resumo_Internação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicInternacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMSolicitadas;
                            tipoGuia = TipoGuia.Solicitação_Internação;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicitacaoSADT"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMSolicitadas;
                            tipoGuia = TipoGuia.Solicitação_SADT;
                            break;
                        }
                        else if (cPart.XML.Contains("guiaSolicitacaoProrrogacao"))
                        {
                            cXMLPart = cPart;
                            tipoCT = TipoCTOPM.ct_OPMSolicitadas;
                            tipoGuia = TipoGuia.Solicitação_Prorrogação;
                            break;
                        }
                    }
                    if (cXMLPart != null)
                    {
                        XDocument xPart = XDocument.Parse(cXMLPart.XML);
                        DataOfAvailableRow infoOfAvailableRow = new DataOfAvailableRow();
                        string ns = "http://www.ans.gov.br/padroes/tiss/schemas";
                        string rootXPath = "";
                        IEnumerable<XElement> xOPMS = null;
                        switch (tipoCT)
                        {
                            case TipoCTOPM.ct_OPMUtilizada:
                            case TipoCTOPM.ct_OPMUtilizadaRevisao:
                                if (tipoGuia == TipoGuia.SP_SADT)
                                {
                                    rootXPath = @"ans:OPMUtilizada[1]/ans:OPM[1]";
                                    xOPMS = xPart.Descendants().Elements(XName.Get("OPMUtilizada", ns)).Elements(XName.Get("OPM", ns));
                                }
                                else if (tipoGuia == TipoGuia.Resumo_Internação)
                                {
                                    rootXPath = @"ans:OPMUtilizadas[1]/ans:OPM[1]";
                                    xOPMS = xPart.Descendants().Elements(XName.Get("OPMUtilizadas", ns)).Elements(XName.Get("OPM", ns));
                                }
                                else if (tipoGuia.Equals(TipoGuia.SP_SADT_Reapresentação))
                                {
                                    rootXPath = @"ans:OPMUtilizada[1]/ans:OPMUtilizada[1]";
                                    xOPMS = xPart.Descendants().Elements(XName.Get("OPMUtilizada", ns)).Elements(XName.Get("OPMUtilizada", ns));
                                }
                                else if (tipoGuia.Equals(TipoGuia.Resumo_Internação_Reapresentação))
                                {
                                    rootXPath = @"ans:OPMUtilizadas[1]/ans:OPMUtilizada[1]";
                                    xOPMS = xPart.Descendants().Elements(XName.Get("OPMUtilizadas", ns)).Elements(XName.Get("OPMUtilizada", ns));
                                }
                                foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows)
                                {
                                    if (row.Cells[1].Range.Text.Contains("OPM Utilizados"))
                                    {
                                        int rowNumber = row.Index + 2;

                                        /*infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                            "Observação");*/
                                        for (int i = rowNumber; i <= Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows.Count; i++)
                                        {
                                            if (Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows[i].Range.ContentControls.Count == 0)
                                            {
                                                object addBeforeRow = Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows[i];
                                                Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows.Add(ref addBeforeRow);
                                                Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows[i].Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom].Visible = false;
                                                infoOfAvailableRow = new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[2].Rows[i], 0, 2, i);
                                                infoOfAvailableRow.IsNewRow = true;
                                                break;
                                            }
                                        }
                                        break;
                                    }
                                }
                                foreach (var OPMs in xOPMS)
                                {
                                    if (tipoGuia == TipoGuia.SP_SADT || tipoGuia == TipoGuia.Resumo_Internação)
                                        OPMs.Add(GetXElement.ct_OPMUtilizada());
                                    else
                                        OPMs.Add(GetXElement.ct_OPMUtilizadaRevisao());
                                }

                                break;


                            case TipoCTOPM.ct_OPMSolicitadas:
                                foreach (Microsoft.Office.Interop.Word.Row row in Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows)
                                {
                                    if (row.Cells[1].Range.Text.Contains("OPMs Solicitadas"))
                                    {
                                        int rowNumber = row.Index + 2;
                                        if (tipoGuia.Equals(TipoGuia.Solicitação_Internação))
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Dados da Autorização");
                                        else
                                            infoOfAvailableRow = DataOfAvailableRow.GetNextAvailableRow(new DataOfAvailableRow(Globals.ThisAddIn.Application.ActiveDocument.Tables[1].Rows[rowNumber], rowNumber + 6),
                                                "Observação");
                                        break;
                                    }
                                }
                                if (infoOfAvailableRow.IsNewRow)
                                {
                                    if (tipoGuia.Equals(TipoGuia.Solicitação_Internação) || tipoGuia.Equals(TipoGuia.Solicitação_Prorrogação))
                                    {
                                        rootXPath = @"ans:OPMsSolicitadas[1]";
                                        xOPMS = xPart.Descendants().Elements(XName.Get("OPMsSolicitadas", ns));
                                    }
                                    else if (tipoGuia.Equals(TipoGuia.Solicitação_SADT))
                                    {
                                        rootXPath = @"ans:opmSolicitada[1]";
                                        xOPMS = xPart.Descendants().Elements(XName.Get("opmSolicitada", ns));
                                    }
                                    foreach (var OPMs in xOPMS)
                                    {
                                        OPMs.Add(GetXElement.ct_OPMSolicitadas());
                                    }
                                }
                                break;
                        }
                        if (infoOfAvailableRow.IsNewRow)
                        {
                            cXMLPart.NamespaceManager.AddNamespace("ans", ns);
                            Office.CustomXMLNode newNode = cXMLPart.DocumentElement.SelectSingleNode(rootXPath);
                            newNode.ParentNode.ReplaceChildSubtree(xOPMS.ElementAt(0).ToString(), newNode);
                        }
                        int OPMIndex = XMLUtils.GetNumberOfOPMSFromCustomXML(cXMLPart, tipoGuia);
                        infoOfAvailableRow.Row.Cells[1].Range.Text = OPMIndex.ToString();
                        object ccIndex = 1;
                        for (int i = 1; i <= infoOfAvailableRow.Row.Cells.Count; i++)
                        {
                            if (infoOfAvailableRow.Row.Previous.Cells[i].Range.ContentControls.Count > 0)
                            {
                                Microsoft.Office.Interop.Word.ContentControl oldCC = infoOfAvailableRow.Row.Previous.Cells[i].Range.ContentControls.get_Item(ref ccIndex);
                                AddinUtils.AddContentControlToRange(oldCC, infoOfAvailableRow.Row.Cells[i].Range,
                                    GetNodeXPath.OPMXPath(oldCC, OPMIndex, tipoCT), cXMLPart);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Falha ao Adicionar novo OPM");
                }
            }
            else
            {
                btAddEquipe.Checked = false;
                MessageBox.Show("Por favor, selecione uma Guia");
            }
        }

        #endregion

        #region Métodos



        #endregion
    }
}
